package com.vue3.blog.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * @author Mr.小朱同学
 * @version 1.0.0
 * @date 2025/6/13 19:42
 * @description 文章评论
 */
@Data
@TableName("sys_comment")
public class CommentEntity implements Serializable {
    /**
     * 评论唯一标识（主键）
     * 自增ID，唯一标识每条评论记录
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 评论所属文章ID（外键）
     * 关联到文章表的主键，标识该评论属于哪篇文章
     */
    @TableField("post_id")
    private Long postId;

    /**
     * 是否作者评论标识
     * 0-普通用户评论，1-文章作者评论
     */
    @TableField("is_author")
    private Integer isAuthor;

    /**
     * 评论人名称
     * 发表评论的用户昵称或名称
     */
    @TableField("commentator")
    private String commentator;

    /**
     * 回复人名称
     * 回复哪一条评论所对应的用户昵称或名称
     */
    @TableField("reply_commentator")
    private String replyCommentator;

    /**
     * 联系方式
     * 评论人的联系信息（如邮箱、手机号等）
     */
    @TableField("contact")
    private String contact;

    /**
     * 评论内容
     * 用户发表的评论文本内容
     */
    @TableField("content")
    private String content;

    /**
     * 请求IP地址
     * 用户发表评论时的IP地址，用于安全审计和地理位置分析
     */
    @TableField("request_ip")
    private String requestIp;

    /**
     * 省份信息
     * 根据IP地址解析出的用户所在省份
     */
    @TableField("province")
    private String province;

    /**
     * 评论创建时间
     * 评论首次提交的时间戳，自动填充
     */
    @TableField(value = "created_time", fill = FieldFill.INSERT)
    private Date createdTime;

    /**
     * 父评论ID
     * 用于构建评论层级结构，指向被回复的评论ID
     * 为null时表示是一级评论（直接评论文章）
     */
    @TableField("parent_id")
    private Long parentId;
}